package integracion;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import dominio.*;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ControlEmpleado {
    
    private SqlMapClient sqlMap;

    public ControlEmpleado() throws IOException, SQLException {

        String resource = "configuracion/sql-map-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        this.sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
   
    }

    public boolean agregarEmpleado(Empleado empleado) {

        try {
            sqlMap.insert("agregarEmpleado",empleado);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public List<Empleado> consultarEmpleados(){

        try{
            
            List empleados2 = sqlMap.queryForList("consultarEmpleados");
            return empleados2;

        } catch (SQLException e){
            Logger.getLogger(ControlEmpleado.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Empleado> consultarEjecutivos(){

        try{

            List ejecutivos = sqlMap.queryForList("consultarEjecutivos");
            return ejecutivos;

        } catch (SQLException e){
            Logger.getLogger(ControlEmpleado.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Empleado> consultarEjecutivosEncargado(){

        try{

            List ejecutivos = sqlMap.queryForList("consultarEjecutivosEncargado");
            return ejecutivos;

        } catch (SQLException e){
            Logger.getLogger(ControlEmpleado.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Empleado> consultarContratados(){

        try{

            List ejecutivos = sqlMap.queryForList("consultarContratados");
            return ejecutivos;

        } catch (SQLException e){
            Logger.getLogger(ControlEmpleado.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Empleado> consultarEmpleadoEvento(){

        try{

            List ejecutivos = sqlMap.queryForList("consultarContratados");
            return ejecutivos;

        } catch (SQLException e){
            Logger.getLogger(ControlEmpleado.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public boolean eliminarEmpleado(Empleado empleado) {

        try {
            sqlMap.delete("eliminarEmpleado",empleado);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public boolean modificarEjecutivo(Empleado empleado) {

        try {
            sqlMap.update("modificarEjecutivo",empleado);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public boolean modificarContratado(Empleado empleado) {

        try {
            sqlMap.update("modificarContratado",empleado);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public SqlMapClient getSqlMap() {
        return sqlMap;
    }

    public void setSqlMap(SqlMapClient sqlMap) {
        this.sqlMap = sqlMap;
    }
}
